package com.app.util.date;

/**
 * 程序计时器
 * 
 * @author Yao
 */
public class Calculagraph {

	/** 计时变量 */
	private long timeCount;

	/** 格式化 */
	private String format;

	/**
	 * 
	 * 实例化并开始计时
	 * 
	 * @param format
	 *            格式化: dd日 HH小时 mm分钟 ss秒 ms毫秒
	 */
	public Calculagraph(String format) {
		this.format = format; 
		this.reStart();
	}

	/**
	 * 实例化并开始计时
	 */
	public Calculagraph() {
		this("HH:mm:ss.ms");
	}

	/**
	 * 重新开始计时
	 */
	public synchronized void reStart() {
		this.timeCount = System.currentTimeMillis();
	}

	/**
	 * 毫秒总计
	 * 
	 * @return
	 */
	public long millisTotal() {
		return System.currentTimeMillis() - this.timeCount;
	}

	/**
	 * 小时总计
	 * 
	 * @return
	 */
	public int hourTotal() {
		long costTime = System.currentTimeMillis() - this.timeCount;
		return (int) (costTime / 1000 / 60 / 60);
	}

	/**
	 * 分钟总计
	 * 
	 * @return
	 */
	public int minuteTotal() {
		long costTime = System.currentTimeMillis() - this.timeCount;
		return (int) (costTime / 1000 / 60);
	}

	/**
	 * 秒钟总计
	 * 
	 * @return
	 */
	public int secendTotal() {
		long costTime = System.currentTimeMillis() - this.timeCount;
		return (int) (costTime / 1000);
	}

	/**
	 * 时间格式
	 * 
	 * @return
	 */
	public String getFormat() {
		return format;
	}

	public String toString() {
		long costTime = System.currentTimeMillis() - this.timeCount;
		return TimeUtil.format(costTime, format);
	}

}
